package com.sunkyc.framework.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sunkyc.commons.entity.TablePageData;
import com.sunkyc.framework.system.entity.LoginUserInfoVo;
import com.sunkyc.framework.system.entity.SysUser;
import com.sunkyc.commons.entity.PageQueryVo;
import com.sunkyc.framework.system.entity.vo.UpdatePasswordVo;

/**
 * <p>
 * 用户信息表 服务类
 * </p>
 *
 * @author sunkyc
 * @since 2022-05-31
 */
public interface SysUserService extends IService<SysUser> {

    TablePageData<SysUser> queryList(PageQueryVo pageQueryVo, SysUser sysUser);


    /**
     * 校验用户名是否唯一
     * @return
     */
    Boolean checkedUserNameUnique(SysUser user);

    /**
     * 校验手机号是否唯一
     * @return
     */
    Boolean checkedPhoneUnique(SysUser user);


    /**
     * 校验email是否唯一
     * @return
     */
    Boolean checkedEmailUnique(SysUser user);


    /**
     * 根据id查询用户信息
     * @param userId
     * @return
     */
    SysUser queryById(Long userId);


    /**
     * 添加用户信息
     * @param user
     * @return
     */
    int addUser(SysUser user);

    /**
     * 修改用户信息
     * @param ids
     * @return
     */
    int delUser(Long[] ids);

    /**
     * 根据id数组【批量】删除用户
     * @param user
     * @return
     */
    int updateUser(SysUser user);

    /**
     * 重置密码
     * @param user
     * @return
     */
    int restPwd(SysUser user);

    /**
     * 登录用户信息获取
     * @param userId
     * @return
     */
    LoginUserInfoVo getUserInfo(Long userId);

    /**
     * 根据用户名查询用户信息
     * @param username
     * @return
     */
    SysUser getUserInfoByUserName(String username);

    int updatePwd(long currentId, UpdatePasswordVo updatePasswordVo);

    int resetAvatar(long currentId, String avatar);
}
